The algorithms of signal processing and image processing often treat data as a two-dimensional array of numbers. In image processing, the image itself is a two-dimensional array of values called pixels. In acoustic signal processing, a two-dimensional array of spectral coefficients distributed in time and frequency is often used. General purpose computers are usually too slow for real time processing of this type of data. The data rates are high, the processing required for many algorithms is extensive, and the throughput rate often requires a massively parallel approach to processing the data. Systolic arrays provide a solution to these obstacles in many cases.
A systolic array of processors has the capability of matching the data flow through the device to the algorithms used in image and signal processing. A systolic array is a network of processors that rhythmically compute and pass data through the network. Most systolic arrays are designed and built as a hardware implementation of a particular algorithm. In such cases the array can execute the algorithm for a problem of a specific size (or a limited number of sizes). For example, one commercially available convolution chip can be configured to Perform convolutions up to any kernel size, N.times.M, as long as N and M are both 8 or less. Another commercially-available chip can perform either a 3.times.7 convolution or a 1.times.21 convolution. If it is necessary to execute the same algorithm for a problem of a larger size, then a larger systolic array must be built. In neural network image processing, neural networks of different sizes and connectivity are often applied to an image during the process of transforming raw pixel data into feature vectors that serve to recognize and classify objects within the image.